#include "main.h"
#include <math.h>

/*判断非负整数的位数*/
static unsigned int int_digit(unsigned int a)
{
	int i = 0;
	while(1)
	{
		a = a/10;
		i++;
		if(a == 0)	break;
	}

	return i;
}

/*获取当前设备状态（led2_green）*/
static unsigned char get_devstat(void)
{
	int devstat,fd;

	/*打开设备文件*/
	fd = open("/dev/led", O_RDWR);
	if (fd < 0) 
	{
		perror("open");
		return 0xFF;
	}

	/*读取设备状态*/
	read(fd,&devstat,sizeof(devstat));
	if(devstat != 0 && devstat != 1)
	{
		printf("Get device status error.\n");
		return 0xFF;
	}

	/*关闭设备文件*/
	close(fd);
	
	return (unsigned char)devstat;
}

/*validdata转换为msg*/
void vdata_to_msg(void)
{
	msg.zgno = validdata[0];
	msg.tem[0] = validdata[1];
	msg.tem[1] = validdata[2];
	msg.hum[0] = validdata[3];
	msg.hum[1] = validdata[4];
	msg.lux[0] = validdata[5];
	msg.lux[1] = validdata[6];
}

/*msg转换为info*/
void msg_to_info(void)
{
	info.zgno = msg.zgno;
	info.temper = msg.tem[1]+(float)msg.tem[0]/pow(10,int_digit(msg.tem[0]));
	info.humi = msg.hum[1]+(float)msg.hum[0]/pow(10,int_digit(msg.hum[0]));
	info.illum = msg.lux[1]<<8 | msg.lux[0];
	info.dev_stat = get_devstat();
}

/*info转换为mobilebuf*/
void info_to_quedata(void)
{
	bzero(quedata,size);
	sprintf(quedata, "%0.1f#%0.1f#%u#%u", info.temper, info.humi, info.illum,info.dev_stat);
}


